package com.ruoyi.training.service;

import java.util.List;
import com.ruoyi.training.domain.PracticeAppointment;
import com.ruoyi.training.dto.PracticeAppointmentDto;
import com.ruoyi.training.vo.PracticeAppointmentVo;

/**
 * 实践预约Service接口
 * 
 * @author WorrilessGo
 * @date 2025-10-14
 */
public interface IPracticeAppointmentService 
{
    /**
     * 查询实践预约
     * 
     * @param practiceAppointmentId 实践预约主键
     * @return 实践预约
     */
    public PracticeAppointment selectPracticeAppointmentByPracticeAppointmentId(String practiceAppointmentId);

    /**
     * 查询实践预约列表
     * 
     * @param practiceAppointment 实践预约
     * @return 实践预约集合
     */
    public List<PracticeAppointment> selectPracticeAppointmentList(PracticeAppointment practiceAppointment);

    /**
     * 新增实践预约
     * 
     * @param practiceAppointment 实践预约
     * @return 结果
     */
    public int insertPracticeAppointment(PracticeAppointment practiceAppointment);

    /**
     * 新增实践预约并关联班级
     *
     * @param practiceAppointmentDto 实践预约DTO对象
     * @return 结果
     */
    public int insertPracticeAppointmentWithClass(PracticeAppointmentDto practiceAppointmentDto);

    /**
     * 修改实践预约
     * 
     * @param practiceAppointment 实践预约
     * @return 结果
     */
    public int updatePracticeAppointment(PracticeAppointment practiceAppointment);

    /**
     * 批量删除实践预约
     * 
     * @param practiceAppointmentIds 需要删除的实践预约主键集合
     * @return 结果
     */
    public int deletePracticeAppointmentByPracticeAppointmentIds(String[] practiceAppointmentIds);

    /**
     * 删除实践预约信息
     * 
     * @param practiceAppointmentId 实践预约主键
     * @return 结果
     */
    public int deletePracticeAppointmentByPracticeAppointmentId(String practiceAppointmentId);

    /**
     * 条件查询实践预约列表
     * lqx
     */
    public List<PracticeAppointmentVo> selectPracticeAppointmentListByQuery(PracticeAppointmentDto practiceAppointmentDto);

    /**
     * 通过班级id查询实践预约列表
     * lqx
     */
    public List<PracticeAppointmentVo> selectListByClassId(String classId);

    /**
     * 修改实践预约(分配班级)
     * lqx
     */
    public int editPracticeAppointment(PracticeAppointmentDto practiceAppointmentDto);

    /**
     * 删除实践预约(分配班级)
     * lqx
     */
    public int removePracticeAppointmentByPracticeAppointmentIds(String[] practiceAppointmentIds);
}
